

package com.hazelcast.jet.impl.util;

import com.hazelcast.internal.serialization.Data;

import javax.annotation.CheckReturnValue;
import java.util.Map.Entry;

public interface AsyncSnapshotWriter {
    @CheckReturnValue
    boolean offer(Entry<? extends Data, ? extends Data> entry);

    @CheckReturnValue
    boolean flushAndResetMap();

    void resetStats();

    boolean hasPendingAsyncOps();

    /**
     * @return any error occurred during writing to underlying map. Error is
     * reported only once, next call will return {@code null} unless another
     * error happens.
     */
    Throwable getError();

    boolean isEmpty();

    long getTotalPayloadBytes();

    long getTotalKeys();

    long getTotalChunks();
}
